import random
import sys #最后一种方法用
import time

def input_limit():
    try:
        limit = int(sys.argv[1])#最多猜测次数
    except ValueError: #异常处理模块
        limit = 4
        print('输入次数有误，使用默认值：4')
    return limit

guess_limit = input_limit()

answer = random.randint(1,10)
# guess_limit = 3 #最多猜测次数
scores = [] #战绩
cycle = 0 #第几轮
#while循环

# guess_count = 0 #已经猜测次数
#while:根据一个判断条件； for 是循环一个已知的列表（while 未知次数，for已知次数）
# while(True):
#     guess = int(input('我想好了1到10之间的数字，你猜是几？\n'))
#     if(answer == guess):
#         print('你猜对了！游戏结束。')
#         break
#     elif(guess > answer):
#         print('太大了，', end='')
#     else:
#         print('太小了，', end='')
#     guess_count += 1
#     if(guess_count == guess_limit):
#         print('你已经达到了猜测次数限制'+str(guess_count)+'次')
#         print('你失败了！')
#         break
#     else:
#         print('请继续猜！')

#for循环

# is_right = False
# for i in range(3):
#     guess = int(input('我想好了1到10之间的数字，你猜是几？\n'))
#     if(answer == guess):
#         is_right=True
#         break
#     elif(guess > answer):
#         print('太大了，', end='')
#     else:
#         print('太小了，', end='')
#     if(i < guess_limit-1):
#         print('请继续猜：')

#     #处理结果
# if(is_right):
#     print('你猜对了！游戏结束。')
# else:
#     print('你已经达到了猜测次数限制，你失败了！')


#argv
while(True):
    begin_time = time.time()
    is_right = False
    cycle += 1
    for i in range(guess_limit):
        try:
            guess = int(input('我想好了1到10之间的数字，你猜是几？\n'))
        except:
            print('别乱说，请输入1-10之间的数字')
            continue #跳过当前这一轮，重新for循环
        if(answer == guess):
            is_right=True
            break
        elif(guess > answer):
            print('太大了，', end='')
        else:
            print('太小了，', end='')
        if(i < guess_limit-1):
            print('请继续猜：')

        #处理结果
    if(is_right):
        print('你猜对了！')
    else:
        print('你已经达到了猜测次数限制，你失败了！')
    end_time = time.time()
    used_time = end_time - begin_time #用了多少时间
    used_time = round(used_time,2) #保留2位小数
    print(f'共用时{used_time}秒')
    #保存战绩
    scores.append((cycle,is_right,used_time))
    best_score = min(scores,key=lambda x:x[2] if x[1] else 9999)
    print("==========战绩==========")
    for _cycle, _is_right, _used_time in scores:
        if(_is_right):
            lable = '✌ 胜利'
        else:
            lable = '❌ 失败'
        best_lable = '😘' if(_cycle == best_score[0] and best_score[1]) else '' #设置最好的标记
        print(f'{_cycle}轮,{lable},用时{_used_time} {best_lable}')
    print("========================")
    cont = input('要继续玩请输入y，否则按任意键退出游戏:')
    if(cont != 'y'):
        print('再见了！886~~')
        break